package negocio;

import beans.ProductoTo;
import beans.UsuarioTo;
import dao.ProductoDAO;
import utildb.Transaction;
import utildb.TransactionException;

public class RegistrarProductosManager {
    public RegistrarProductosManager() {
        super();
    }
    
    public void agregaProductos( ProductoTo producto ) throws RegistrarProductosManagerException,
                                                              RegistrarProveedorManagerException,
                                                              ProductoManagerException,
                                                              UsuarioManagerException {
            Transaction t = new Transaction();
            UsuarioManager userPMG = new UsuarioManager();
            ProductoManager prodPMG = new ProductoManager();
            boolean lb_okey = false;
            String codigo = producto.getCcod_Prod();
            String cproveedor = producto.getCruc_Prov();
            String cmoneda = producto.getCtip_Mone_Comp();
            Double ncosto = producto.getNpre_Comp();
            try {
                if ((codigo == null) || codigo.length() == 0 ) {
                   throw new RegistrarProductosManagerException("Código del producto no valido");
                }
                if ((cproveedor == null) || cproveedor.length() == 0 ) {
                   throw new RegistrarProductosManagerException("Código del Proveedor no valido");
                }
                if (ncosto == 0)  {
                   throw new RegistrarProductosManagerException("Producto debe tener costo de compra");
                }
                if ((cmoneda == null) || cmoneda.length() == 0 ) {
                   throw new RegistrarProductosManagerException("Producto debe tener tipo de moneda de compra");
                }
                //
                UsuarioTo oProve = userPMG.buscarProveedor(cproveedor);
                String cnameProveedor = oProve.getCnom_Usua();
                if ((cnameProveedor == null) || cnameProveedor.length() == 0 ) {
                   throw new RegistrarProductosManagerException("Proveedor no valido");
                }
                lb_okey = prodPMG.existeProducto(cproveedor, codigo);
                if (lb_okey == true) {
                   throw new RegistrarProductosManagerException("Producto ya existe");
                }
                
                ProductoDAO fact = new ProductoDAO(t);
		fact.create(producto);
		t.commit();
            } catch (TransactionException e) {
                    throw new RegistrarProductosManagerException(e.getMessage());
            } finally {
                    t.close();
            }
//            return producto;
    }
    
}
